package org.lboot.flow.test.unit;

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.lboot.flow.constant.FlowTaskAuditConst;
import org.lboot.flow.event.system.FlowProcessEvent;
import org.lboot.flow.event.user.FlowCloseEvent;
import org.lboot.flow.module.audit.FlowAudit;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class ScriptTestDemo {
    public static void main(String[] args) {
        String customPassRule = "$.pass > $.reject && $.pass > 99.9";
        String customRejectRule = "$.reject >= 30";
        Map<String, Integer> taskMap = new HashMap<>();
        taskMap.put("pass", 100);
        taskMap.put("reject", 30);
        String json = JSONUtil.toJsonStr(taskMap);
        ScriptEngineManager manager = new ScriptEngineManager();
        // 获取 JavaScript 的 ScriptEngine
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        // 将 JSON 字符串传递给脚本引擎
        try {
            // 解析 JSON 字符串为 JavaScript 对象
            engine.eval("var $ = " + json + ";");
            // 执行脚本获取值
            Boolean execPassResult = (Boolean) engine.eval(customPassRule);
            Boolean execRejectResult = (Boolean) engine.eval(customRejectRule);
            //如果是通过
            log.info("执行pass脚本:{} 执行reject脚本:{}", execPassResult, execRejectResult);

        } catch (ScriptException e) {
            e.printStackTrace();
        }
//        // 创建 ScriptEngineManager
//        ScriptEngineManager manager = new ScriptEngineManager();
//        // 获取 JavaScript 的 ScriptEngine
//        ScriptEngine engine = manager.getEngineByName("JavaScript");
//
//        // 定义一个 JSON 字符串
//        String json = "{\"name\":\"John\", \"age\":30}";
//
//        // 将 JSON 字符串传递给脚本引擎
//        try {
//            // 解析 JSON 字符串为 JavaScript 对象
//            engine.eval("var obj = " + json + ";");
//            // 修改对象的属性
//            engine.eval("obj.name = 'Jane';");
//            engine.eval("obj.age = 25;");
//            // 删除也支持
//            engine.eval("delete obj.age");
//            // 添加一个新属性
//            engine.eval("obj.gender = 'female';");
//            // 将修改后的对象转换回 JSON 字符串
//            String modifiedJson = (String) engine.eval("JSON.stringify(obj);");
//            // 输出修改后的 JSON 字符串
//            System.out.println("Modified JSON: " + modifiedJson);
//        } catch (ScriptException e) {
//            e.printStackTrace();
//        }
    }
}
